[Linux] 为Linux设置英文补全输入法

Posted by Aerber Zhou on 2019-02-17

fcitx 输入法

  1. 激活到并且进入Fcixt的英文输入状态,点击任意输入框.
  2. 按 ctrl+alt+H ,以激活 spell hint状态.
  3. 输入几个英文字母,即可弹出候选单词(即自动补全功能),可以按alt加数字,以选取候选单词.

注:

  • 为了令补全功能更贴心,可以在Fcitx设置里的找到"Enlish"(输入法)一栏,双击,进入可有更多设置. 比如把 "choose key modifier"由 alt 改成 none ,作用是选词时免按alt.
  • ctrl+alt+N 可以创建新词
  • 使用Fcitx的“快速输入”功能,自己找一套英语单词表,把其放入 ~/.config/fcitx/QuickPhrase.mb 中,这样就能实现自定义单词。英文单词词库有现成的

(网页版)Yong网页版

链接

小小输入法/Yong

绿色安装

下载地址

在解压目录下

1
sudo ./yong-tool.sh --install

源码编译安装

源码:
Github

build.js

说明:
Yong输入法的编译方法

依赖:

小小输入法在linux下开发和编译。没有测试过在其他操作系统下进行编译。

需要是64位系统,32位系统某些模块就没法编译,需要自己手工调整。

gcc 编译器,需要支持c99以上版本。clang应该也行。编译windows相关需要mingw-w64工具链。

nodejs需要0.12版本及以上。

系统中需要安装好相关的开发环境,比如gtk3-devel,gtk2-devel,ibus-devel,libxkbcommon-devel(debian下是libgtk-3-dev libgtk2.0-dev libxkbcommon-dev libibus-1.0-dev)。

准备好build.js,在https://github.com/dgod/build.js

编译:

由于git不能存储空目录,所以下载到的源代码缺少一些目录结构,编译前需要先创建好一些目录

1
2
3
4
mkdir - p {llib,cloud,gbk,mb,vim}/{l32,l64} 
mkdir -p {im,config}/{l32-gtk3,l32-gtk2,l64-gtk3,l64-gtk2}
mkdir -p im/gtk-im/{l32-gtk3,l32-gtk2,l64-gtk3,l64-gtk2}
mkdir -p im/IMdkit/{l32,l64}

编译所有相关内容

1
node build.js

只编译linux相关内容

1
node build.js l32 l64

需要qt5模块的,这个编译某些地方是写死了路径的,在某些系统上可能无法编译通过,需要自己调整build.txt。(需要安装包qt5-qtbase-devel,debian下是qtbase5-dev,qtbase5-private-dev)

1
node build.js -C im/qt5-im

linux下打包成7z,需要系统中安装有p7zip压缩工具。

1
node build.js -C install copy dist

PKGBUILD for Archlinux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Maintainer: firef <use_my_id at gmail dot com>

pkgname=yong
pkgver=2.4.0
pkgrel=1
pkgdesc="Tiny Small Chinese Input Method"
arch=('i686')
url="https://github.com/dgod/yong"
license=('GPL')

makedepends=('git' 'nodejs' 'gcc' 'ibus' 'wayland' 'gtk2' 'gtk3' 'libxkbcommon')
#provides=("yong=$pkgver")

depends=('pango')

#install=yong.install

source=("git+https://github.com/dgod/yong.git" "git+https://github.com/dgod/build.js.git")
md5sums=('SKIP' 'SKIP')


pkgver() {
cd "$srcdir/$pkgname/install"
awk '/%define +version/{print $3}' yong.spec | sed 's|-|.|g'
}
prepare(){
cd $srcdir/$pkgname
mkdir -p {llib,cloud,gbk,mb,vim}/l32
mkdir -p {im,config}/{l32-gtk3,l32-gtk2}
mkdir -p im/gtk-im/{l32-gtk3,l32-gtk2}
mkdir -p im/IMdkit/l32


sed -i 's/copy_build("l64");//' install/build.txt
# modify shuangping rules
sed -i -r -e "s/'p'(,[1|2],\"\wh{0,1}un\")/'y'\1/g" \
-e "s/'d'(,[1|2],\"\wh{0,1}uang\")/'l'\1/g" \
-e "s/'d'(,[1|2],\"\wh{0,1}iang\")/'l'\1/g" \
-e "s/'y'(,[1|2],\"\wh{0,1}uai\")/'k'\1/g" \
-e "s/'y'(,[1|2],\"\wh{0,1}ing\")/'k'\1/g" \
-e "s/'w'(,[1|2],\"\wh{0,1}ua\")/'x'\1/g" \
-e "s/'w'(,[1|2],\"\wh{0,1}ia\")/'x'\1/g" \
-e "s/'b'(,[1|2],\"\wh{0,1}ou\")/'z'\1/g" \
-e "s/'z'(,[1|2],\"\wh{0,1}ei\")/'w'\1/g" \
-e "s/'k'(,[1|2],\"\wh{0,1}ao\")/'c'\1/g" \
-e "s/'l'(,[1|2],\"\wh{0,1}ai\")/'d'\1/g" \
-e "s/'n'(,[1|2],\"\wh{0,1}in\")/'b'\1/g" \
-e "s/'x'(,[1|2],\"\wh{0,1}ie\")/'p'\1/g" \
-e "s/'c'(,[1|2],\"\wh{0,1}iao\")/'n'\1/g" common/pinyin.c
cp -f common/pinyin.c cloud/pinyin.c
sed -i -e 's/default=0/default=6/' \
-e "s|overlay=mb/pinyin.ini|overlay=mb/sp.ini\nsp=zrm|" \
-e "s/select=LSHIFT RSHIFT/select=; '/" \
-e "s/CNen=LCTRL/CNen=LSHIFT/" \
-e "s/page=- =/page=, ./" \
im/yong.ini
sed -i 's/"自然码"/"小鹤双拼"/' config/config_ui.c
}
build() {

buildjs="$srcdir/build.js/build.js"
cd $srcdir/$pkgname
node $buildjs l32
node $buildjs -C install copy
}

package() {
buildjs="$srcdir/build.js/build.js"
mkdir -p $pkgdir/usr/bin
cp -a $srcdir/$pkgname/install/yong $pkgdir/usr
cd $pkgdir/usr/yong
ln -sf ../yong/l32/yong-gtk3 $pkgdir/usr/bin/yong
ln -sf ../yong/l32/yong-config-gtk3 $pkgdir/usr/bin/yong-config
install -D locale/zh_CN.mo $pkgdir/usr/share/locale/zh_CN/LC_MESSAGES/yong.mo
install -D l32/gtk-im/im-yong-gtk2.so $pkgdir/usr/lib/gtk-2.0/2.10.0/immodules/im-yong.so
install -D l32/gtk-im/im-yong-gtk3.so $pkgdir/usr/lib/gtk-3.0/3.0.0/immodules/im-yong.so

}
post_install() {
gtk-query-immodules-2.0 --update-cache
gtk-query-immodules-3.0 --update-cache
}

post_remove() {
gtk-query-immodules-2.0 --update-cache
gtk-query-immodules-3.0 --update-cache
}

把以上脚本存为PKGBUILD…后执行makepkg就会自动编译出Arch专用的安装包了.再用root权限执行以下命令就装上了.

1
pacman -U yong-*.tar.xz

需要手动添加以下输入法启动脚本到~/.xprofile文件下.

1
2
3
4
export GTK_IM_MODULE=yong
export QT_IM_MODULE=yong
export XMODIFIERS=@im=yong
yong -d

注:编译出来自己用。。把内置的自然码双拼改成小鹤双拼(默认输入法).

(题外话)Mac下的英文输入法

https://github.com/dongyuwei/hallelujahIM